Multiple Vector Summation using Einsum with Sparse Partials
This is an example of how to properly use the einsum function to compute the summation of multiple vectors while using sparse partial derivatives.
from csdl_om import Simulatorimport numpy as npfrom csdl import Modelimport csdl
class ExampleMultipleVectorSumSparse(Model):
def define(self):
a = np.arange(4) vec = self.declare_variable('a', val=a)
self.register_output( 'einsum_special2_sparse_derivs', csdl.einsum_new_api(vec, vec, operation=[ (1, ), (2, ), ], partial_format='sparse'))
sim = Simulator(ExampleMultipleVectorSumSparse())sim.run()
print('a', sim['a'].shape)print(sim['a'])print('einsum_special2_sparse_derivs', sim['einsum_special2_sparse_derivs'].shape)print(sim['einsum_special2_sparse_derivs'])
[0. 1. 2. 3.]einsum_special2_sparse_derivs (1,)[36.]